package com.scwatch.ext.wowza;

import com.google.gson.annotations.SerializedName;

import java.util.List;

public class wowzaapplcationinfo {


    /**
     * version : 1502331189000
     * serverName : _defaultServer_
     * name : ios
     * appType : Live
     * applicationTimeout : 0
     * pingTimeout : 0
     * repeaterQueryString :
     * clientStreamReadAccess : *
     * clientStreamWriteAccess : *
     * avSyncMethod : senderreport
     * maxRTCPWaitTime : 12000
     * httpCORSHeadersEnabled : true
     * httpStreamers : ["cupertinostreaming","smoothstreaming","sanjosestreaming","mpegdashstreaming"]
     * mediaReaderRandomAccessReaderClass :
     * httpOptimizeFileReads : false
     * mediaReaderBufferSeekIO : false
     * captionLiveIngestType :
     * securityConfig : {"serverName":"_defaultServer_","secureTokenVersion":0,"clientStreamWriteAccess":"*","publishRequirePassword":true,"publishPasswordFile":"","publishRTMPSecureURL":"","publishIPBlackList":"","publishIPWhiteList":"","publishBlockDuplicateStreamNames":false,"publishValidEncoders":"","publishAuthenticationMethod":"digest","playMaximumConnections":0,"playRequireSecureConnection":false,"secureTokenSharedSecret":"","secureTokenUseTEAForRTMP":false,"secureTokenIncludeClientIPInHash":false,"secureTokenHashAlgorithm":"","secureTokenQueryParametersPrefix":"","secureTokenOriginSharedSecret":"","playIPBlackList":"","playIPWhiteList":"","playAuthenticationMethod":"none"}
     * streamConfig : {"serverName":"_defaultServer_","streamType":"live","storageDir":"${com.wowza.wms.context.VHostConfigHome}/content","createStorageDir":false,"storageDirExists":true,"keyDir":"${com.wowza.wms.context.VHostConfigHome}/keys","liveStreamPacketizer":["cupertinostreamingpacketizer","mpegdashstreamingpacketizer","sanjosestreamingpacketizer","smoothstreamingpacketizer"],"httpRandomizeMediaName":false}
     * dvrConfig : {"serverName":"_defaultServer_","licenseType":"Perpetual Bundle Unlimited","inUse":false,"dvrEnable":false,"windowDuration":0,"storageDir":"${com.wowza.wms.context.VHostConfigHome}/dvr","archiveStrategy":"append","dvrOnlyStreaming":false,"startRecordingOnStartup":true,"dvrEncryptionSharedSecret":"","dvrMediaCacheEnabled":false,"httpRandomizeMediaName":false}
     * drmConfig : {"serverName":"_defaultServer_","licenseType":"NotLicensed","inUse":false,"cupertinoEncryptionAPIBased":false,"ezDRMUsername":"","ezDRMPassword":"","buyDRMUserKey":"","buyDRMProtectSmoothStreaming":false,"buyDRMProtectCupertinoStreaming":false,"buyDRMProtectMpegDashStreaming":false,"verimatrixProtectCupertinoStreaming":false,"verimatrixCupertinoKeyServerIpAddress":"","verimatrixCupertinoKeyServerPort":0,"verimatrixCupertinoVODPerSessionKeys":false,"verimatrixProtectSmoothStreaming":false,"verimatrixSmoothKeyServerIpAddress":"","verimatrixSmoothKeyServerPort":0}
     * transcoderConfig : {"serverName":"_defaultServer_","available":true,"licensed":true,"licenses":-1,"licensesInUse":0,"templates":{"vhostName":"_defaultVHost_","templates":[{"id":"myStream","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/myStream"},{"id":"transrate","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transrate"},{"id":"audioonly","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/audioonly"},{"id":"transcode-h265-divx","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transcode-h265-divx"},{"id":"transcode","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transcode"}]},"liveStreamTranscoder":"transcoder","templatesInUse":"${SourceStreamName}.xml,transrate.xml","profileDir":"${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles","templateDir":"${com.wowza.wms.context.VHostConfigHome}/transcoder/templates","createTemplateDir":false}
     * modules : {"serverName":"_defaultServer_","moduleList":[{"order":0,"name":"base","description":"Base","class":"com.wowza.wms.module.ModuleCore"},{"order":1,"name":"logging","description":"Client Logging","class":"com.wowza.wms.module.ModuleClientLogging"},{"order":2,"name":"flvplayback","description":"FLVPlayback","class":"com.wowza.wms.module.ModuleFLVPlayback"},{"order":3,"name":"ModuleCoreSecurity","description":"Core Security Module for Applications","class":"com.wowza.wms.security.ModuleCoreSecurity"}]}
     */

    private String version;
    private String serverName;
    private String name;
    private String appType;
    private int applicationTimeout;
    private int pingTimeout;
    private String repeaterQueryString;
    private String clientStreamReadAccess;
    private String clientStreamWriteAccess;
    private String avSyncMethod;
    private int maxRTCPWaitTime;
    private boolean httpCORSHeadersEnabled;
    private String mediaReaderRandomAccessReaderClass;
    private boolean httpOptimizeFileReads;
    private boolean mediaReaderBufferSeekIO;
    private String captionLiveIngestType;
    private SecurityConfigBean securityConfig;
    private StreamConfigBean streamConfig;
    private DvrConfigBean dvrConfig;
    private DrmConfigBean drmConfig;
    private TranscoderConfigBean transcoderConfig;
    private ModulesBean modules;
    private List<String> httpStreamers;

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getServerName() {
        return serverName;
    }

    public void setServerName(String serverName) {
        this.serverName = serverName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAppType() {
        return appType;
    }

    public void setAppType(String appType) {
        this.appType = appType;
    }

    public int getApplicationTimeout() {
        return applicationTimeout;
    }

    public void setApplicationTimeout(int applicationTimeout) {
        this.applicationTimeout = applicationTimeout;
    }

    public int getPingTimeout() {
        return pingTimeout;
    }

    public void setPingTimeout(int pingTimeout) {
        this.pingTimeout = pingTimeout;
    }

    public String getRepeaterQueryString() {
        return repeaterQueryString;
    }

    public void setRepeaterQueryString(String repeaterQueryString) {
        this.repeaterQueryString = repeaterQueryString;
    }

    public String getClientStreamReadAccess() {
        return clientStreamReadAccess;
    }

    public void setClientStreamReadAccess(String clientStreamReadAccess) {
        this.clientStreamReadAccess = clientStreamReadAccess;
    }

    public String getClientStreamWriteAccess() {
        return clientStreamWriteAccess;
    }

    public void setClientStreamWriteAccess(String clientStreamWriteAccess) {
        this.clientStreamWriteAccess = clientStreamWriteAccess;
    }

    public String getAvSyncMethod() {
        return avSyncMethod;
    }

    public void setAvSyncMethod(String avSyncMethod) {
        this.avSyncMethod = avSyncMethod;
    }

    public int getMaxRTCPWaitTime() {
        return maxRTCPWaitTime;
    }

    public void setMaxRTCPWaitTime(int maxRTCPWaitTime) {
        this.maxRTCPWaitTime = maxRTCPWaitTime;
    }

    public boolean isHttpCORSHeadersEnabled() {
        return httpCORSHeadersEnabled;
    }

    public void setHttpCORSHeadersEnabled(boolean httpCORSHeadersEnabled) {
        this.httpCORSHeadersEnabled = httpCORSHeadersEnabled;
    }

    public String getMediaReaderRandomAccessReaderClass() {
        return mediaReaderRandomAccessReaderClass;
    }

    public void setMediaReaderRandomAccessReaderClass(String mediaReaderRandomAccessReaderClass) {
        this.mediaReaderRandomAccessReaderClass = mediaReaderRandomAccessReaderClass;
    }

    public boolean isHttpOptimizeFileReads() {
        return httpOptimizeFileReads;
    }

    public void setHttpOptimizeFileReads(boolean httpOptimizeFileReads) {
        this.httpOptimizeFileReads = httpOptimizeFileReads;
    }

    public boolean isMediaReaderBufferSeekIO() {
        return mediaReaderBufferSeekIO;
    }

    public void setMediaReaderBufferSeekIO(boolean mediaReaderBufferSeekIO) {
        this.mediaReaderBufferSeekIO = mediaReaderBufferSeekIO;
    }

    public String getCaptionLiveIngestType() {
        return captionLiveIngestType;
    }

    public void setCaptionLiveIngestType(String captionLiveIngestType) {
        this.captionLiveIngestType = captionLiveIngestType;
    }

    public SecurityConfigBean getSecurityConfig() {
        return securityConfig;
    }

    public void setSecurityConfig(SecurityConfigBean securityConfig) {
        this.securityConfig = securityConfig;
    }

    public StreamConfigBean getStreamConfig() {
        return streamConfig;
    }

    public void setStreamConfig(StreamConfigBean streamConfig) {
        this.streamConfig = streamConfig;
    }

    public DvrConfigBean getDvrConfig() {
        return dvrConfig;
    }

    public void setDvrConfig(DvrConfigBean dvrConfig) {
        this.dvrConfig = dvrConfig;
    }

    public DrmConfigBean getDrmConfig() {
        return drmConfig;
    }

    public void setDrmConfig(DrmConfigBean drmConfig) {
        this.drmConfig = drmConfig;
    }

    public TranscoderConfigBean getTranscoderConfig() {
        return transcoderConfig;
    }

    public void setTranscoderConfig(TranscoderConfigBean transcoderConfig) {
        this.transcoderConfig = transcoderConfig;
    }

    public ModulesBean getModules() {
        return modules;
    }

    public void setModules(ModulesBean modules) {
        this.modules = modules;
    }

    public List<String> getHttpStreamers() {
        return httpStreamers;
    }

    public void setHttpStreamers(List<String> httpStreamers) {
        this.httpStreamers = httpStreamers;
    }

    public static class SecurityConfigBean {
        /**
         * serverName : _defaultServer_
         * secureTokenVersion : 0
         * clientStreamWriteAccess : *
         * publishRequirePassword : true
         * publishPasswordFile :
         * publishRTMPSecureURL :
         * publishIPBlackList :
         * publishIPWhiteList :
         * publishBlockDuplicateStreamNames : false
         * publishValidEncoders :
         * publishAuthenticationMethod : digest
         * playMaximumConnections : 0
         * playRequireSecureConnection : false
         * secureTokenSharedSecret :
         * secureTokenUseTEAForRTMP : false
         * secureTokenIncludeClientIPInHash : false
         * secureTokenHashAlgorithm :
         * secureTokenQueryParametersPrefix :
         * secureTokenOriginSharedSecret :
         * playIPBlackList :
         * playIPWhiteList :
         * playAuthenticationMethod : none
         */

        private String serverName;
        private int secureTokenVersion;
        private String clientStreamWriteAccess;
        private boolean publishRequirePassword;
        private String publishPasswordFile;
        private String publishRTMPSecureURL;
        private String publishIPBlackList;
        private String publishIPWhiteList;
        private boolean publishBlockDuplicateStreamNames;
        private String publishValidEncoders;
        private String publishAuthenticationMethod;
        private int playMaximumConnections;
        private boolean playRequireSecureConnection;
        private String secureTokenSharedSecret;
        private boolean secureTokenUseTEAForRTMP;
        private boolean secureTokenIncludeClientIPInHash;
        private String secureTokenHashAlgorithm;
        private String secureTokenQueryParametersPrefix;
        private String secureTokenOriginSharedSecret;
        private String playIPBlackList;
        private String playIPWhiteList;
        private String playAuthenticationMethod;

        public String getServerName() {
            return serverName;
        }

        public void setServerName(String serverName) {
            this.serverName = serverName;
        }

        public int getSecureTokenVersion() {
            return secureTokenVersion;
        }

        public void setSecureTokenVersion(int secureTokenVersion) {
            this.secureTokenVersion = secureTokenVersion;
        }

        public String getClientStreamWriteAccess() {
            return clientStreamWriteAccess;
        }

        public void setClientStreamWriteAccess(String clientStreamWriteAccess) {
            this.clientStreamWriteAccess = clientStreamWriteAccess;
        }

        public boolean isPublishRequirePassword() {
            return publishRequirePassword;
        }

        public void setPublishRequirePassword(boolean publishRequirePassword) {
            this.publishRequirePassword = publishRequirePassword;
        }

        public String getPublishPasswordFile() {
            return publishPasswordFile;
        }

        public void setPublishPasswordFile(String publishPasswordFile) {
            this.publishPasswordFile = publishPasswordFile;
        }

        public String getPublishRTMPSecureURL() {
            return publishRTMPSecureURL;
        }

        public void setPublishRTMPSecureURL(String publishRTMPSecureURL) {
            this.publishRTMPSecureURL = publishRTMPSecureURL;
        }

        public String getPublishIPBlackList() {
            return publishIPBlackList;
        }

        public void setPublishIPBlackList(String publishIPBlackList) {
            this.publishIPBlackList = publishIPBlackList;
        }

        public String getPublishIPWhiteList() {
            return publishIPWhiteList;
        }

        public void setPublishIPWhiteList(String publishIPWhiteList) {
            this.publishIPWhiteList = publishIPWhiteList;
        }

        public boolean isPublishBlockDuplicateStreamNames() {
            return publishBlockDuplicateStreamNames;
        }

        public void setPublishBlockDuplicateStreamNames(boolean publishBlockDuplicateStreamNames) {
            this.publishBlockDuplicateStreamNames = publishBlockDuplicateStreamNames;
        }

        public String getPublishValidEncoders() {
            return publishValidEncoders;
        }

        public void setPublishValidEncoders(String publishValidEncoders) {
            this.publishValidEncoders = publishValidEncoders;
        }

        public String getPublishAuthenticationMethod() {
            return publishAuthenticationMethod;
        }

        public void setPublishAuthenticationMethod(String publishAuthenticationMethod) {
            this.publishAuthenticationMethod = publishAuthenticationMethod;
        }

        public int getPlayMaximumConnections() {
            return playMaximumConnections;
        }

        public void setPlayMaximumConnections(int playMaximumConnections) {
            this.playMaximumConnections = playMaximumConnections;
        }

        public boolean isPlayRequireSecureConnection() {
            return playRequireSecureConnection;
        }

        public void setPlayRequireSecureConnection(boolean playRequireSecureConnection) {
            this.playRequireSecureConnection = playRequireSecureConnection;
        }

        public String getSecureTokenSharedSecret() {
            return secureTokenSharedSecret;
        }

        public void setSecureTokenSharedSecret(String secureTokenSharedSecret) {
            this.secureTokenSharedSecret = secureTokenSharedSecret;
        }

        public boolean isSecureTokenUseTEAForRTMP() {
            return secureTokenUseTEAForRTMP;
        }

        public void setSecureTokenUseTEAForRTMP(boolean secureTokenUseTEAForRTMP) {
            this.secureTokenUseTEAForRTMP = secureTokenUseTEAForRTMP;
        }

        public boolean isSecureTokenIncludeClientIPInHash() {
            return secureTokenIncludeClientIPInHash;
        }

        public void setSecureTokenIncludeClientIPInHash(boolean secureTokenIncludeClientIPInHash) {
            this.secureTokenIncludeClientIPInHash = secureTokenIncludeClientIPInHash;
        }

        public String getSecureTokenHashAlgorithm() {
            return secureTokenHashAlgorithm;
        }

        public void setSecureTokenHashAlgorithm(String secureTokenHashAlgorithm) {
            this.secureTokenHashAlgorithm = secureTokenHashAlgorithm;
        }

        public String getSecureTokenQueryParametersPrefix() {
            return secureTokenQueryParametersPrefix;
        }

        public void setSecureTokenQueryParametersPrefix(String secureTokenQueryParametersPrefix) {
            this.secureTokenQueryParametersPrefix = secureTokenQueryParametersPrefix;
        }

        public String getSecureTokenOriginSharedSecret() {
            return secureTokenOriginSharedSecret;
        }

        public void setSecureTokenOriginSharedSecret(String secureTokenOriginSharedSecret) {
            this.secureTokenOriginSharedSecret = secureTokenOriginSharedSecret;
        }

        public String getPlayIPBlackList() {
            return playIPBlackList;
        }

        public void setPlayIPBlackList(String playIPBlackList) {
            this.playIPBlackList = playIPBlackList;
        }

        public String getPlayIPWhiteList() {
            return playIPWhiteList;
        }

        public void setPlayIPWhiteList(String playIPWhiteList) {
            this.playIPWhiteList = playIPWhiteList;
        }

        public String getPlayAuthenticationMethod() {
            return playAuthenticationMethod;
        }

        public void setPlayAuthenticationMethod(String playAuthenticationMethod) {
            this.playAuthenticationMethod = playAuthenticationMethod;
        }
    }

    public static class StreamConfigBean {
        /**
         * serverName : _defaultServer_
         * streamType : live
         * storageDir : ${com.wowza.wms.context.VHostConfigHome}/content
         * createStorageDir : false
         * storageDirExists : true
         * keyDir : ${com.wowza.wms.context.VHostConfigHome}/keys
         * liveStreamPacketizer : ["cupertinostreamingpacketizer","mpegdashstreamingpacketizer","sanjosestreamingpacketizer","smoothstreamingpacketizer"]
         * httpRandomizeMediaName : false
         */

        private String serverName;
        private String streamType;
        private String storageDir;
        private boolean createStorageDir;
        private boolean storageDirExists;
        private String keyDir;
        private boolean httpRandomizeMediaName;
        private List<String> liveStreamPacketizer;

        public String getServerName() {
            return serverName;
        }

        public void setServerName(String serverName) {
            this.serverName = serverName;
        }

        public String getStreamType() {
            return streamType;
        }

        public void setStreamType(String streamType) {
            this.streamType = streamType;
        }

        public String getStorageDir() {
            return storageDir;
        }

        public void setStorageDir(String storageDir) {
            this.storageDir = storageDir;
        }

        public boolean isCreateStorageDir() {
            return createStorageDir;
        }

        public void setCreateStorageDir(boolean createStorageDir) {
            this.createStorageDir = createStorageDir;
        }

        public boolean isStorageDirExists() {
            return storageDirExists;
        }

        public void setStorageDirExists(boolean storageDirExists) {
            this.storageDirExists = storageDirExists;
        }

        public String getKeyDir() {
            return keyDir;
        }

        public void setKeyDir(String keyDir) {
            this.keyDir = keyDir;
        }

        public boolean isHttpRandomizeMediaName() {
            return httpRandomizeMediaName;
        }

        public void setHttpRandomizeMediaName(boolean httpRandomizeMediaName) {
            this.httpRandomizeMediaName = httpRandomizeMediaName;
        }

        public List<String> getLiveStreamPacketizer() {
            return liveStreamPacketizer;
        }

        public void setLiveStreamPacketizer(List<String> liveStreamPacketizer) {
            this.liveStreamPacketizer = liveStreamPacketizer;
        }
    }

    public static class DvrConfigBean {
        /**
         * serverName : _defaultServer_
         * licenseType : Perpetual Bundle Unlimited
         * inUse : false
         * dvrEnable : false
         * windowDuration : 0
         * storageDir : ${com.wowza.wms.context.VHostConfigHome}/dvr
         * archiveStrategy : append
         * dvrOnlyStreaming : false
         * startRecordingOnStartup : true
         * dvrEncryptionSharedSecret :
         * dvrMediaCacheEnabled : false
         * httpRandomizeMediaName : false
         */

        private String serverName;
        private String licenseType;
        private boolean inUse;
        private boolean dvrEnable;
        private int windowDuration;
        private String storageDir;
        private String archiveStrategy;
        private boolean dvrOnlyStreaming;
        private boolean startRecordingOnStartup;
        private String dvrEncryptionSharedSecret;
        private boolean dvrMediaCacheEnabled;
        private boolean httpRandomizeMediaName;

        public String getServerName() {
            return serverName;
        }

        public void setServerName(String serverName) {
            this.serverName = serverName;
        }

        public String getLicenseType() {
            return licenseType;
        }

        public void setLicenseType(String licenseType) {
            this.licenseType = licenseType;
        }

        public boolean isInUse() {
            return inUse;
        }

        public void setInUse(boolean inUse) {
            this.inUse = inUse;
        }

        public boolean isDvrEnable() {
            return dvrEnable;
        }

        public void setDvrEnable(boolean dvrEnable) {
            this.dvrEnable = dvrEnable;
        }

        public int getWindowDuration() {
            return windowDuration;
        }

        public void setWindowDuration(int windowDuration) {
            this.windowDuration = windowDuration;
        }

        public String getStorageDir() {
            return storageDir;
        }

        public void setStorageDir(String storageDir) {
            this.storageDir = storageDir;
        }

        public String getArchiveStrategy() {
            return archiveStrategy;
        }

        public void setArchiveStrategy(String archiveStrategy) {
            this.archiveStrategy = archiveStrategy;
        }

        public boolean isDvrOnlyStreaming() {
            return dvrOnlyStreaming;
        }

        public void setDvrOnlyStreaming(boolean dvrOnlyStreaming) {
            this.dvrOnlyStreaming = dvrOnlyStreaming;
        }

        public boolean isStartRecordingOnStartup() {
            return startRecordingOnStartup;
        }

        public void setStartRecordingOnStartup(boolean startRecordingOnStartup) {
            this.startRecordingOnStartup = startRecordingOnStartup;
        }

        public String getDvrEncryptionSharedSecret() {
            return dvrEncryptionSharedSecret;
        }

        public void setDvrEncryptionSharedSecret(String dvrEncryptionSharedSecret) {
            this.dvrEncryptionSharedSecret = dvrEncryptionSharedSecret;
        }

        public boolean isDvrMediaCacheEnabled() {
            return dvrMediaCacheEnabled;
        }

        public void setDvrMediaCacheEnabled(boolean dvrMediaCacheEnabled) {
            this.dvrMediaCacheEnabled = dvrMediaCacheEnabled;
        }

        public boolean isHttpRandomizeMediaName() {
            return httpRandomizeMediaName;
        }

        public void setHttpRandomizeMediaName(boolean httpRandomizeMediaName) {
            this.httpRandomizeMediaName = httpRandomizeMediaName;
        }
    }

    public static class DrmConfigBean {
        /**
         * serverName : _defaultServer_
         * licenseType : NotLicensed
         * inUse : false
         * cupertinoEncryptionAPIBased : false
         * ezDRMUsername :
         * ezDRMPassword :
         * buyDRMUserKey :
         * buyDRMProtectSmoothStreaming : false
         * buyDRMProtectCupertinoStreaming : false
         * buyDRMProtectMpegDashStreaming : false
         * verimatrixProtectCupertinoStreaming : false
         * verimatrixCupertinoKeyServerIpAddress :
         * verimatrixCupertinoKeyServerPort : 0
         * verimatrixCupertinoVODPerSessionKeys : false
         * verimatrixProtectSmoothStreaming : false
         * verimatrixSmoothKeyServerIpAddress :
         * verimatrixSmoothKeyServerPort : 0
         */

        private String serverName;
        private String licenseType;
        private boolean inUse;
        private boolean cupertinoEncryptionAPIBased;
        private String ezDRMUsername;
        private String ezDRMPassword;
        private String buyDRMUserKey;
        private boolean buyDRMProtectSmoothStreaming;
        private boolean buyDRMProtectCupertinoStreaming;
        private boolean buyDRMProtectMpegDashStreaming;
        private boolean verimatrixProtectCupertinoStreaming;
        private String verimatrixCupertinoKeyServerIpAddress;
        private int verimatrixCupertinoKeyServerPort;
        private boolean verimatrixCupertinoVODPerSessionKeys;
        private boolean verimatrixProtectSmoothStreaming;
        private String verimatrixSmoothKeyServerIpAddress;
        private int verimatrixSmoothKeyServerPort;

        public String getServerName() {
            return serverName;
        }

        public void setServerName(String serverName) {
            this.serverName = serverName;
        }

        public String getLicenseType() {
            return licenseType;
        }

        public void setLicenseType(String licenseType) {
            this.licenseType = licenseType;
        }

        public boolean isInUse() {
            return inUse;
        }

        public void setInUse(boolean inUse) {
            this.inUse = inUse;
        }

        public boolean isCupertinoEncryptionAPIBased() {
            return cupertinoEncryptionAPIBased;
        }

        public void setCupertinoEncryptionAPIBased(boolean cupertinoEncryptionAPIBased) {
            this.cupertinoEncryptionAPIBased = cupertinoEncryptionAPIBased;
        }

        public String getEzDRMUsername() {
            return ezDRMUsername;
        }

        public void setEzDRMUsername(String ezDRMUsername) {
            this.ezDRMUsername = ezDRMUsername;
        }

        public String getEzDRMPassword() {
            return ezDRMPassword;
        }

        public void setEzDRMPassword(String ezDRMPassword) {
            this.ezDRMPassword = ezDRMPassword;
        }

        public String getBuyDRMUserKey() {
            return buyDRMUserKey;
        }

        public void setBuyDRMUserKey(String buyDRMUserKey) {
            this.buyDRMUserKey = buyDRMUserKey;
        }

        public boolean isBuyDRMProtectSmoothStreaming() {
            return buyDRMProtectSmoothStreaming;
        }

        public void setBuyDRMProtectSmoothStreaming(boolean buyDRMProtectSmoothStreaming) {
            this.buyDRMProtectSmoothStreaming = buyDRMProtectSmoothStreaming;
        }

        public boolean isBuyDRMProtectCupertinoStreaming() {
            return buyDRMProtectCupertinoStreaming;
        }

        public void setBuyDRMProtectCupertinoStreaming(boolean buyDRMProtectCupertinoStreaming) {
            this.buyDRMProtectCupertinoStreaming = buyDRMProtectCupertinoStreaming;
        }

        public boolean isBuyDRMProtectMpegDashStreaming() {
            return buyDRMProtectMpegDashStreaming;
        }

        public void setBuyDRMProtectMpegDashStreaming(boolean buyDRMProtectMpegDashStreaming) {
            this.buyDRMProtectMpegDashStreaming = buyDRMProtectMpegDashStreaming;
        }

        public boolean isVerimatrixProtectCupertinoStreaming() {
            return verimatrixProtectCupertinoStreaming;
        }

        public void setVerimatrixProtectCupertinoStreaming(boolean verimatrixProtectCupertinoStreaming) {
            this.verimatrixProtectCupertinoStreaming = verimatrixProtectCupertinoStreaming;
        }

        public String getVerimatrixCupertinoKeyServerIpAddress() {
            return verimatrixCupertinoKeyServerIpAddress;
        }

        public void setVerimatrixCupertinoKeyServerIpAddress(String verimatrixCupertinoKeyServerIpAddress) {
            this.verimatrixCupertinoKeyServerIpAddress = verimatrixCupertinoKeyServerIpAddress;
        }

        public int getVerimatrixCupertinoKeyServerPort() {
            return verimatrixCupertinoKeyServerPort;
        }

        public void setVerimatrixCupertinoKeyServerPort(int verimatrixCupertinoKeyServerPort) {
            this.verimatrixCupertinoKeyServerPort = verimatrixCupertinoKeyServerPort;
        }

        public boolean isVerimatrixCupertinoVODPerSessionKeys() {
            return verimatrixCupertinoVODPerSessionKeys;
        }

        public void setVerimatrixCupertinoVODPerSessionKeys(boolean verimatrixCupertinoVODPerSessionKeys) {
            this.verimatrixCupertinoVODPerSessionKeys = verimatrixCupertinoVODPerSessionKeys;
        }

        public boolean isVerimatrixProtectSmoothStreaming() {
            return verimatrixProtectSmoothStreaming;
        }

        public void setVerimatrixProtectSmoothStreaming(boolean verimatrixProtectSmoothStreaming) {
            this.verimatrixProtectSmoothStreaming = verimatrixProtectSmoothStreaming;
        }

        public String getVerimatrixSmoothKeyServerIpAddress() {
            return verimatrixSmoothKeyServerIpAddress;
        }

        public void setVerimatrixSmoothKeyServerIpAddress(String verimatrixSmoothKeyServerIpAddress) {
            this.verimatrixSmoothKeyServerIpAddress = verimatrixSmoothKeyServerIpAddress;
        }

        public int getVerimatrixSmoothKeyServerPort() {
            return verimatrixSmoothKeyServerPort;
        }

        public void setVerimatrixSmoothKeyServerPort(int verimatrixSmoothKeyServerPort) {
            this.verimatrixSmoothKeyServerPort = verimatrixSmoothKeyServerPort;
        }
    }

    public static class TranscoderConfigBean {
        /**
         * serverName : _defaultServer_
         * available : true
         * licensed : true
         * licenses : -1
         * licensesInUse : 0
         * templates : {"vhostName":"_defaultVHost_","templates":[{"id":"myStream","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/myStream"},{"id":"transrate","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transrate"},{"id":"audioonly","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/audioonly"},{"id":"transcode-h265-divx","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transcode-h265-divx"},{"id":"transcode","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transcode"}]}
         * liveStreamTranscoder : transcoder
         * templatesInUse : ${SourceStreamName}.xml,transrate.xml
         * profileDir : ${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles
         * templateDir : ${com.wowza.wms.context.VHostConfigHome}/transcoder/templates
         * createTemplateDir : false
         */

        private String serverName;
        private boolean available;
        private boolean licensed;
        private int licenses;
        private int licensesInUse;
        private TemplatesBeanX templates;
        private String liveStreamTranscoder;
        private String templatesInUse;
        private String profileDir;
        private String templateDir;
        private boolean createTemplateDir;

        public String getServerName() {
            return serverName;
        }

        public void setServerName(String serverName) {
            this.serverName = serverName;
        }

        public boolean isAvailable() {
            return available;
        }

        public void setAvailable(boolean available) {
            this.available = available;
        }

        public boolean isLicensed() {
            return licensed;
        }

        public void setLicensed(boolean licensed) {
            this.licensed = licensed;
        }

        public int getLicenses() {
            return licenses;
        }

        public void setLicenses(int licenses) {
            this.licenses = licenses;
        }

        public int getLicensesInUse() {
            return licensesInUse;
        }

        public void setLicensesInUse(int licensesInUse) {
            this.licensesInUse = licensesInUse;
        }

        public TemplatesBeanX getTemplates() {
            return templates;
        }

        public void setTemplates(TemplatesBeanX templates) {
            this.templates = templates;
        }

        public String getLiveStreamTranscoder() {
            return liveStreamTranscoder;
        }

        public void setLiveStreamTranscoder(String liveStreamTranscoder) {
            this.liveStreamTranscoder = liveStreamTranscoder;
        }

        public String getTemplatesInUse() {
            return templatesInUse;
        }

        public void setTemplatesInUse(String templatesInUse) {
            this.templatesInUse = templatesInUse;
        }

        public String getProfileDir() {
            return profileDir;
        }

        public void setProfileDir(String profileDir) {
            this.profileDir = profileDir;
        }

        public String getTemplateDir() {
            return templateDir;
        }

        public void setTemplateDir(String templateDir) {
            this.templateDir = templateDir;
        }

        public boolean isCreateTemplateDir() {
            return createTemplateDir;
        }

        public void setCreateTemplateDir(boolean createTemplateDir) {
            this.createTemplateDir = createTemplateDir;
        }

        public static class TemplatesBeanX {
            /**
             * vhostName : _defaultVHost_
             * templates : [{"id":"myStream","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/myStream"},{"id":"transrate","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transrate"},{"id":"audioonly","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/audioonly"},{"id":"transcode-h265-divx","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transcode-h265-divx"},{"id":"transcode","href":"/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/transcode"}]
             */

            private String vhostName;
            private List<TemplatesBean> templates;

            public String getVhostName() {
                return vhostName;
            }

            public void setVhostName(String vhostName) {
                this.vhostName = vhostName;
            }

            public List<TemplatesBean> getTemplates() {
                return templates;
            }

            public void setTemplates(List<TemplatesBean> templates) {
                this.templates = templates;
            }

            public static class TemplatesBean {
                /**
                 * id : myStream
                 * href : /v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/ios/transcoder/templates/myStream
                 */

                private String id;
                private String href;

                public String getId() {
                    return id;
                }

                public void setId(String id) {
                    this.id = id;
                }

                public String getHref() {
                    return href;
                }

                public void setHref(String href) {
                    this.href = href;
                }
            }
        }
    }

    public static class ModulesBean {
        /**
         * serverName : _defaultServer_
         * moduleList : [{"order":0,"name":"base","description":"Base","class":"com.wowza.wms.module.ModuleCore"},{"order":1,"name":"logging","description":"Client Logging","class":"com.wowza.wms.module.ModuleClientLogging"},{"order":2,"name":"flvplayback","description":"FLVPlayback","class":"com.wowza.wms.module.ModuleFLVPlayback"},{"order":3,"name":"ModuleCoreSecurity","description":"Core Security Module for Applications","class":"com.wowza.wms.security.ModuleCoreSecurity"}]
         */

        private String serverName;
        private List<ModuleListBean> moduleList;

        public String getServerName() {
            return serverName;
        }

        public void setServerName(String serverName) {
            this.serverName = serverName;
        }

        public List<ModuleListBean> getModuleList() {
            return moduleList;
        }

        public void setModuleList(List<ModuleListBean> moduleList) {
            this.moduleList = moduleList;
        }

        public static class ModuleListBean {
            /**
             * order : 0
             * name : base
             * description : Base
             * class : com.wowza.wms.module.ModuleCore
             */

            private int order;
            private String name;
            private String description;
            @SerializedName("class")
            private String classX;

            public int getOrder() {
                return order;
            }

            public void setOrder(int order) {
                this.order = order;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public String getDescription() {
                return description;
            }

            public void setDescription(String description) {
                this.description = description;
            }

            public String getClassX() {
                return classX;
            }

            public void setClassX(String classX) {
                this.classX = classX;
            }
        }
    }
}
